package junior.db.service;

import junior.db.dao.update.BatchInsertOption;
import junior.db.dao.update.BatchUpdateOption;
import junior.db.dao.update.BatchUpsertOption;
import junior.db.dao.update.InsertOption;
import junior.db.dao.update.UpdateOption;
import junior.db.dao.update.UpsertOption;

import java.util.List;

/**
 * @author wubo
 * @date 2024/9/6 16:23
 */
public interface IEntityService<ID, PO, VO, DTO> {
    
    int insert(DTO dto);
    
    int insert(DTO dto, InsertOption option);
    
    int batchInsert(List<DTO> dtoList);
    
    int batchInsert(List<DTO> dtoList, BatchInsertOption option);
    
    int upsert(DTO dto, String... updateFields);
    
    int upsert(DTO dto, UpsertOption option);
    
    int batchUpsert(List<DTO> dtoList, String... updateFields);
    
    int batchUpsert(List<DTO> dtoList, BatchUpsertOption option);
    
    int update(DTO dto, String... updateFields);
    
    int update(DTO dto, UpdateOption option);
    
    int batchUpdate(List<DTO> dtoList, String... updateFields);
    
    int batchUpdate(List<DTO> dtoList, BatchUpdateOption option);
    
    int deleteById(ID id);
    
    int batchDeleteById(List<ID> idList);
}
